home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / FilmUP (IT).ifs < prev    next >
Text File  |  2005-05-05  |  10KB  |  319 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=L. Francisco
  8. Title=FilmUP
  9. Description=Get movie info from LeoFilmUP.it
  10. Site=http://filmup.leonardo.it
  11. Language=IT
  12. Version=1.0.1 - 02.02.2005
  13. Requires=3.5.0
  14. Comments=**Changes**|Pivello: query URL changed|Zandal:  sistemato puntamento a COMMENTS|Pivello: Film site URL selectable instead of FilmUp page URL|dinolib: adapted to v.3.5.0 and little bugfix | ABNormal restarted...|14.04.2005: Fixed infinite loop if description field missing (Pivello)
  15. License=*  The source code of the script can be used in   |*  another program only if full credits to              |*  script author and a link to Ant Movie Catalog  |*  website are given in the About box or in       |*  the documentation of the program               |
  16. GetInfo=1
  17.  
  18. [Options]
  19. AlternateURL=0|0|0=Use the FilmUP web site for FieldURL|1=Try to use ufficial movie web site for FieldURL
  20. MezzoVoto=1|1|0=Integer Ratings|1=Ratings with ,5
  21.  
  22. ***************************************************)
  23.  
  24.  
  25.  
  26. program LeonardoFilmUP;
  27. uses
  28.   StringUtils1;
  29.  
  30. var
  31.   MovieName: string;
  32.   TheMovieAddress: string;
  33.  
  34. procedure AnalyzePage(Address: string);
  35. var
  36.   Page: TStringList;
  37.   LineNr: integer;
  38.   BeginPos: integer;
  39. begin
  40.   Page := TStringList.Create;
  41.   Page.Text := GetPage(Address);
  42.   LineNr := FindLine('Ordina risultati per', Page, 0);
  43.   if LineNr = -1 then
  44.   begin
  45.     SetField(fieldURL, Address);
  46.     AnalyzeMoviePage(Page);
  47.   end
  48.   else
  49.   begin
  50.     PickTreeClear;
  51.     AddMoviesTitles(Page);
  52.     if TheMovieAddress='' then
  53.     begin
  54.       if PickTreeExec(Address) then AnalyzePage(Address);
  55.     end
  56.     else
  57.     begin
  58.       SetField(fieldURL, TheMovieAddress);
  59.       Page.Text := GetPage(TheMovieAddress);
  60.       AnalyzeMoviePage(Page);
  61.     end;
  62.   end;
  63.   Page.Free;
  64. end;
  65.  
  66. procedure AnalyzeMoviePage(Page: TStringList);
  67. var
  68.   Line, PreviousLine: string;
  69.   NomeHtml: string;
  70.   LineNr,PrevLineNr: Integer;
  71.   BeginPos, EndPos: Integer;
  72.   Field: integer;
  73. begin
  74.   LineNr := FindLine('<font face="arial, helvetica" size="3"><b>', Page, 0);
  75.   if LineNr > -1 then
  76.   begin
  77.     //Translated Title
  78.     Line := Page.GetString(LineNr);
  79.     HTMLRemoveTags(Line);
  80.     SetField(fieldTranslatedTitle, Line);
  81.  
  82.     repeat
  83.       //Look for next info
  84.       repeat
  85.         LineNr := LineNr + 1;
  86.         Line := Page.GetString(LineNr);
  87.         HTMLRemoveTags(Line);
  88.       until (Line<>'')  or (LineNr > Page.Count);
  89.      
  90.       // Test if 'Trama:' missing
  91.       if ((PreviousLine = 'Data di uscita: ')
  92.       or  (PreviousLine = 'Uscita prevista: ')) and (Line <> 'Trama:') then
  93.         if (copy(Line,1,6)<>'Trama:') then
  94.           Line := 'Trama:' + Line;
  95.       PreviousLine := Line;
  96.      
  97.       //Look for type of line
  98.       if Line = 'Titolo originale: ' then
  99.         Field := fieldOriginalTitle
  100.       else if Line = 'Regia: ' then
  101.         Field := fieldDirector
  102.       else if Line = 'Produzione: ' then
  103.         Field := fieldProducer
  104.       else if Line = 'Nazione: ' then
  105.         Field := fieldCountry
  106.       else if Line = 'Genere: ' then
  107.         Field := fieldCategory
  108.       else if Line = 'Anno: ' then
  109.         Field := fieldYear
  110.       else if Line = 'Durata: ' then
  111.         Field := fieldLength //Special case: get number only
  112.       else if Line = 'Sito ufficiale: ' then
  113.         Field := fieldURL
  114.       else if Line = 'Cast: ' then
  115.         Field := fieldActors
  116.       else if Line = 'Trama:' then
  117.         Field := fieldDescription
  118.       else
  119.         Field := 0;
  120.  
  121.       // I have to add this test, for sometimes the description
  122.       // is on the same line as the tag 'Trama'
  123.       if (copy(Line,1,6)='Trama:') and (length(Line)>6) then
  124.        begin
  125.         Field := fieldDescription;
  126.         Delete(Line,1,6);
  127.         HTMLDecode(Line);
  128.        end
  129.       else
  130.        begin
  131.         //Get values
  132.         LineNr := LineNr + 1;
  133.         Line := Page.GetString(LineNr);
  134.         HTMLRemoveTags(Line);
  135.         HTMLDecode(Line);
  136.  
  137.         //Special case: Length
  138.         if Field = fieldLength then Line := copy(Line,1,length(Line)-1);
  139.        end;
  140.  
  141.        //Alternative URL case
  142.        if (field = fieldURL) then
  143.        begin
  144.          if (Length(Line) = 0) or (GetOption('AlternateURL')=0) then      // if WEB url missing or explicitly requested...
  145.            Line := GetField(fieldURL)  // ...restore FilmUp URL
  146.          else
  147.            Line := 'http://'+Line;
  148.        end;
  149.  
  150.       if Field<>0 then SetField(Field,Line);
  151.  
  152.     until (Field=fieldDescription) or (LineNr > Page.Count);
  153.   end;
  154.  
  155.   PrevLineNr := LineNr;
  156.  
  157.   //Comments
  158.   LineNr := FindLine('">Recensione</a>', Page, PrevLineNr);
  159.   if LineNr > -1 then
  160.   begin
  161.     Line := Page.GetString(LineNr);
  162.     if Pos('DVD', Line) <> 0 then Delete(Line,1,pos('DVD',Line));
  163.     if Pos('Scheda', Line) <> 0 then Delete(Line,1,pos('Scheda',Line));
  164.     Delete(Line,1,pos('<a href="',Line)+8);
  165.     NomeHtml :=Copy(Line,1,pos('"',Line)-1);
  166.     if (copy(NomeHtml,1,1)<>'/') then
  167.     begin
  168.       NomeHtml := '/' + NomeHtml;
  169.     end;
  170.     GetComments('http://filmup.leonardo.it'+NomeHtml);
  171.     PrevLineNr := LineNr;
  172.   end;
  173.  
  174.   //Rating
  175.   LineNr := FindLine('">Opinioni</a>', Page, PrevLineNr);
  176.   if LineNr > -1 then
  177.   begin
  178.     Line := Page.GetString(LineNr);
  179.     Delete(Line,1,pos('Recensione',Line));
  180.     Delete(Line,1,pos('<a href="',Line)+8);
  181.     Line := GetLineFromOtherPage(Copy(Line,1,pos('"',Line)-1),'</b> - <img src="');
  182.     if Line <> '' then
  183.     begin
  184.       Line := Copy(Line,1,pos('</b> - <img src="',Line)-1);
  185.       if GetOption('MezzoVoto')=0 then
  186.  if pos('.',Line)>0 then Line := Copy(Line,1,pos('.',Line)-1);
  187.       SetField(fieldRating,Line);
  188.     end;
  189.     PrevLineNr := LineNr;
  190.   end;
  191.  
  192.   //Picture
  193.   LineNr := FindLine('<a href="posters/locp/', Page, PrevLineNr);
  194.   if LineNr = -1 then
  195.   begin
  196.     LineNr := FindLine('<img src="locand', Page, PrevLineNr);
  197.     if LineNr > -1 then
  198.     begin
  199.       Line := Page.GetString(LineNr);
  200.       Delete(Line,1,pos('<img src="locand', Line)+9);
  201.       GetPicture('http://filmup.leonardo.it/'+Copy(Line,1,pos('"',Line)-1));
  202.     end;
  203.   end
  204.   else
  205.   begin
  206.     Line := Page.GetString(LineNr);
  207.     Delete(Line,1,pos('<a href="posters/locp/',Line)+8);
  208.     Line := GetLineFromOtherPage('http://filmup.leonardo.it/'+Copy(Line,1,pos('"',Line)-1),'<img src="../loc/500/');
  209.     if Line <> '' then
  210.     begin
  211.       Delete(Line,1,pos('<img src="../',Line)+12);
  212.       GetPicture('http://filmup.leonardo.it/posters/'+Copy(Line,1,pos('"',Line)-1));
  213.     end;
  214.   end;
  215.   //DisplayResults;
  216. end;
  217.  
  218. function GetLineFromOtherPage(address: string; hint: string): string;
  219. var
  220.   Page: TStringList;
  221.   LineNr: integer;
  222. begin
  223.   Page := TStringList.Create;
  224.   Page.Text := GetPage(Address);
  225.   LineNr := FindLine(hint, Page, 0);
  226.   if LineNr > -1 then result := Page.GetString(LineNr);
  227.   Page.Free;
  228. end;
  229.  
  230. procedure GetComments(address: string);
  231. var
  232.   Page: TStringList;
  233.   BeginLine: integer;
  234.   EndLine: integer;
  235.   i: integer;
  236.   Line, Comments: string;
  237. begin
  238.   Page := TStringList.Create;
  239.   Page.Text := GetPage(Address);
  240.   BeginLine := FindLine('RECENSIONI', Page, 0);
  241.   BeginLine := FindLine('<font face="arial,helvetica" size="2"><b>', Page, BeginLine);
  242.   EndLine := FindLine('<a href="opinioni.htm">Scrivi la tua recensione!</a></font><br><br>', Page, BeginLine);
  243.   for i:= BeginLine+1 to EndLine-1 do
  244.   begin
  245.     Line := Page.GetString(i);
  246.     Line := StringReplace(Line, '<br>', #13#10);
  247.     Line := StringReplace(Line, #13#10#32, #13#10);
  248.     HTMLRemoveTags(Line);
  249.     HTMLDecode(Line);
  250.     Comments := Comments + Line;
  251.   end;
  252.   SetField(fieldComments, Comments);
  253.   Page.Free;
  254. end;
  255.  
  256. procedure AddMoviesTitles(Page: TStringList);
  257. var
  258.   LineNr: Integer;
  259.   Line: string;
  260.   MovieTitle, MovieAddress: string;
  261.   BeginPos, EndPos: Integer;
  262.   begin
  263.   LineNr := 0;
  264.   LineNr := FindLine('FilmUP - Scheda: ',Page,LineNr);
  265. while LineNr > -1 do
  266.   begin
  267.   MovieAddress := 'http://filmup.leonardo.it/sc_' + TextBetween((Page.GetString(LineNr-1)), '_', '.') + '.htm';
  268.     Line := Page.GetString(LineNr);
  269.   MovieTitle := TextAfter(Page.GetString(LineNr), 'Scheda: ');
  270.       While pos ('<span', MovieTitle) > 0 Do begin
  271.       MovieTitle := TextBefore(MovieTitle, '<span', '') + TextAfter(MovieTitle, 'bold;">');
  272.       end;
  273.       While pos ('</span', MovieTitle) > 0 Do begin
  274.       MovieTitle := TextBefore(MovieTitle, '</span', '') + TextAfter(MovieTitle, '/span>');
  275.       end;
  276.     HTMLRemoveTags(MovieTitle);
  277.     HTMLDecode(Movietitle);
  278.     LineNr := FindLine('FilmUP - Scheda:',Page,LineNr+1);
  279.     PickTreeAdd(MovieTitle, MovieAddress);
  280.     if TheMovieAddress='*' then
  281.       TheMovieAddress := MovieAddress
  282.     else
  283.       TheMovieAddress := '';
  284.   end;
  285.   LineNr := FindLine('Successivo',Page,LineNr);
  286.   Line := Page.GetString(LineNr);
  287.   BeginPos := pos('HREF',Line);
  288.   if BeginPos>0 then
  289.   begin
  290.     Delete(Line,1,BeginPos + 5);
  291.     EndPos := pos('"',Line);
  292.     MovieAddress := copy(Line,1,EndPos-1);
  293.     PickTreeMoreLink(MovieAddress);
  294.   end;
  295.   if TheMovieAddress='*' then TheMovieAddress := '';
  296. end;
  297.  
  298. // -----------------------------
  299. // Questo Φ il main dello script
  300. // -----------------------------
  301. begin
  302.   if CheckVersion(3,5,0) then
  303.    begin
  304.     TheMovieAddress := '*';
  305.     MovieName := StringReplace(GetField(fieldTranslatedTitle), '.', ' ');
  306.     if MovieName = '' then
  307.       MovieName := StringReplace(GetField(fieldOriginalTitle), '.', ' ');
  308. While pos ('[', MovieName) > 0 Do begin
  309.   MovieName := TextBefore(MovieName, '[', '') + TextAfter(MovieName, ']');
  310. end;
  311.     if Input('FilmUP Import', 'Digita il titolo del film:', MovieName) then
  312.     begin
  313.       AnalyzePage('http://filmup.leonardo.it/cgi-bin/search.cgi?q='+UrlEncode(MovieName)+'&ul=%25%2Fsc_%25');
  314.     end;
  315.    end
  316.   else
  317.     ShowMessage('Questo script richiede una versione pi∙ nuova di Ant Movie Catalog (almeno la versione 3.5.0)');
  318. end.
  319.